Cell phones are frequently equipped with sensors, such as a gyroscope and an accelerometer, that track the movement of the cell phone. The gyroscope tracks the rotation of the device as it tilts forward or backward, turns from portrait to landscape, and twists from side to side. The accelerometer measures the linear movement of the device as it moves up or down, left or right, and toward or away from the user. The data from the gyroscope and accelerometer can be digitized and synthesized to support a motion-based user interface on the cell phone, as well as other applications, such as motion-based video games.
For accuracy, sensors must be calibrated, and occasionally recalibrated. Sensor calibration and auto-calibration methods usually cause a sudden change, e.g., a relatively instantaneous jump in streaming sensor data. That is, after a new value for a calibration parameter is determined, the corrected sensor data that are subject to the new calibration value generally suffer from a sudden change when the new calibration value is introduced in the correction. This can lead to an undesirable experience for users of an application that uses the calibrated sensor data.
Some applications that use the calibrated data could actually malfunction if the data have sudden changes. For example, a 3D pointing application (e.g. in a video game or the user interface) that uses gyroscope or accelerometer data may suddenly change the direction of pointing if the gyroscope or accelerometer bias suddenly changes. Slow changes, however, may be tolerated since the user has the chance to react to the change.
One solution to avoid the sudden changes/data jumps due to recalibration is to avoid the calibrated data stream entirely by those applications (i.e. data clients) that cannot tolerate the jumps. Another solution is to apply the calibration only once, at the beginning of the data usage session.